﻿using static System.Console;

// 使用一维数组寻找并存储范围1到MAX内的所有质数
// 质数(Prime Number)

const int MAX = 300;
// false 为质数，true为非质数
// 声明后若没有给定初值，其默认值为false
bool[] prime = new bool[MAX];
prime[0] = true; // 0 为非质数    
prime[1] = true; // 1 为非质数
int num = 2;
int i;
// 将1~MAX中不是质数者，逐一过滤掉，以此方法找到所有质数
while (num < MAX)
{
    if (!prime[num])
    {
        for (i = num + num; i < MAX; i += num)
        {
            if (prime[i])
                continue;
            prime[i] = true; // 设置为true，代表此数为非质数
        }
    }

    num++;
}

// 打印1~MAX之间的所有质数
WriteLine($"1到{MAX}之间的所有质数为：");
for (i = 2, num = 0; i < MAX; i++)
{
    if (!prime[i])
    {
        Write(i + "\t");
        num++;
    }
}

WriteLine("\n质数总和= " + num + "个");
ReadKey();